As modeling of software programs (and program design) is becoming more and more mainstream in the software development industry and with the expected wide-spread use of domain-specific modeling languages, the ability to quickly create modeling tools for those languages is becoming more critical than ever. A modeling language is defined both in terms of its abstract syntax and its concrete syntax (surface notation). For graphical modeling languages, there is also the diagram interchange syntax.
The abstract syntax is typically defined with the Meta Object Facility (MOF) specification, a standard from the Object Management Group (OMG). Fortunately, over the past decade there has been reported success in implementing MOF and mapping it to technology domains such as Java as in the Eclipse Modeling Framework (EMF). This has bootstrapped a lot of modeling language implementations like the infamous Eclipse UML2 project, which is used in some popular modeling tools like Rational Software's UML modeling tools (RSA, RSM, RSD . . . etc).
As for the diagram interchange syntax, OMG provides a Diagram Interchange (DI) standard. Unfortunately, this standard did not get widely adopted in the industry to date. Instead various tool vendors defined proprietary DI specifications, like the one provided by the Graphical Editing Framework (GMF), and provided tooling for it. In an effort to remedy the situation, OMG has issued a new request for proposal (RFP) for Diagram Definition, requesting solutions that address the weaknesses of DI, mainly the ability to define valid compositions of DI blocks for a given diagram type. A separate patent application by Assignee covers a proposal for a solution to this same problem.
Although the abstract syntax and diagram interchange syntax are two important parts of a modeling language specification, the concrete syntax is the part that is least formalized despite the fact it accounts for most of the cost of developing a modeling tool. The concrete syntax of a graphical modeling language specifies the graphical building blocks that constitute the surface notation and their mapping to the abstract syntax and DI syntax of the language. Most current specifications of graphical modeling languages resort to a combination of informal text and pictures to depict the concrete syntax, causing inconsistencies and confusion to users and vendors alike.
What is needed is a formal way to specify the graphical concrete syntax of a graphical modeling language.